Skip to content

Add DatetimeAttributeField, use it for datetime fields#32

Merged
Fivell merged 1 commit intomainfrom
feat/datetime-types
Mar 15, 2026
Merged

Add DatetimeAttributeField, use it for datetime fields#32
Fivell merged 1 commit intomainfrom
feat/datetime-types

Conversation

@Fivell
Copy link
Member

@Fivell Fivell commented Mar 13, 2026

Summary

  • Add DatetimeAttributeField to base.py that parses ISO 8601 strings to datetime.datetime
  • Replace SafeAttributeField with DatetimeAttributeField for all created_at, expires_at, expire_at fields across 14 resource files
  • Add missing created_at field to EncryptedFile
  • Update test assertions to compare datetime objects

@sonarqubecloud
Copy link

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a dedicated DatetimeAttributeField for ISO-8601 timestamp attributes and migrates various resources’ created_at / expiry fields from raw strings to datetime.datetime objects, updating docs and tests accordingly.

Changes:

  • Add DatetimeAttributeField in resources/base.py to deserialize ISO-8601 timestamps into datetime objects.
  • Switch multiple resources’ created_at, expires_at, and expire_at fields to use DatetimeAttributeField.
  • Update README and tests to reflect datetime-typed fields.

Reviewed changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/resources/test_address_verification.py Updates assertions to compare created_at as datetime objects.
src/didww/resources/base.py Adds DatetimeAttributeField datetime deserialization logic.
src/didww/resources/address.py Migrates created_at to DatetimeAttributeField.
src/didww/resources/address_verification.py Migrates created_at to DatetimeAttributeField.
src/didww/resources/did.py Migrates created_at / expires_at to DatetimeAttributeField.
src/didww/resources/did_reservation.py Migrates created_at / expire_at to DatetimeAttributeField.
src/didww/resources/encrypted_file.py Migrates expire_at to DatetimeAttributeField.
src/didww/resources/export.py Migrates created_at to DatetimeAttributeField.
src/didww/resources/identity.py Migrates created_at to DatetimeAttributeField.
src/didww/resources/order.py Migrates created_at to DatetimeAttributeField.
src/didww/resources/permanent_supporting_document.py Migrates created_at to DatetimeAttributeField.
src/didww/resources/proof.py Migrates created_at / expires_at to DatetimeAttributeField.
src/didww/resources/shared_capacity_group.py Migrates created_at to DatetimeAttributeField.
src/didww/resources/voice_in_trunk.py Migrates created_at to DatetimeAttributeField.
src/didww/resources/voice_in_trunk_group.py Migrates created_at to DatetimeAttributeField.
src/didww/resources/voice_out_trunk.py Migrates created_at to DatetimeAttributeField.
README.md Documents datetime vs date-only field behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -1,5 +1,6 @@
import functools
import importlib
from datetime import datetime, timezone
Comment on lines +88 to +95
raw = super().__get__(instance, type)
if instance is None:
return self
if raw is None:
return None
return datetime.fromisoformat(raw.replace("Z", "+00:00"))


Comment on lines 4 to 7
class EncryptedFile(DidwwApiModel):
description = SafeAttributeField("description")
expire_at = SafeAttributeField("expire_at")
expire_at = DatetimeAttributeField("expire_at")

@Fivell Fivell force-pushed the feat/datetime-types branch from 0dbd0a8 to 4a75299 Compare March 15, 2026 09:18
@Fivell Fivell changed the title Add DatetimeAttributeField, use it for datetime fields, add created_at to EncryptedFile Add DatetimeAttributeField, use it for datetime fields, add created_at to Mar 15, 2026
@Fivell Fivell changed the title Add DatetimeAttributeField, use it for datetime fields, add created_at to Add DatetimeAttributeField, use it for datetime fields Mar 15, 2026
@Fivell Fivell force-pushed the feat/datetime-types branch 2 times, most recently from d7b7b60 to 18bf94e Compare March 15, 2026 17:15
…e types in README

- Add DatetimeAttributeField, use it for all datetime fields
- Remove EncryptedFile.created_at (not present in API)
- Document date and datetime field types in README
- Simplify date/datetime section with generic rule
@Fivell Fivell force-pushed the feat/datetime-types branch from 18bf94e to 29bc007 Compare March 15, 2026 17:19
@sonarqubecloud
Copy link

@Fivell Fivell merged commit 0f095c0 into main Mar 15, 2026
13 checks passed
@Fivell Fivell deleted the feat/datetime-types branch March 15, 2026 17:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants